package cn.micro.eye.entity;

import cn.micro.eye.commons.entity.MicroEntity;
import cn.micro.eye.type.MemberCategoryEnum;
import cn.micro.eye.type.MemberResourceEnum;
import cn.micro.eye.type.MemberSexEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.Date;

/**
 * <p>
 * 用户基础信息
 * </p>
 *
 * @author lry
 * @since 2018-09-11
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@TableName("member")
public class Member extends MicroEntity<Member> {

    private static final long serialVersionUID = 1L;

    public static final String NAME_FIELD = "name";
    public static final String MOBILE_FIELD = "mobile";
    public static final String ID_CARD_FIELD = "id_card";
    public static final String EMAIL_FIELD = "email";

    /**
     * 姓名(真实姓名)
     */
    private String name;
    /**
     * 头像地址
     */
    private String headImgUrl;
    /**
     * 性别
     * {@link MemberSexEnum}
     */
    private Integer sex;
    /**
     * 年龄
     */
    private Integer age;

    /**
     * 邮箱地址
     */
    private String email;
    /**
     * 手机号码
     */
    private String mobile;
    /**
     * 身份证
     */
    private String idCard;
    /**
     * 登录密码
     */
    private String password;

    /**
     * 生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birth;
    /**
     * 用户类型（1=普通用户、2=学生、3=专家/教授、4=组织机构/公司）
     * {@link MemberCategoryEnum}
     */
    private Integer category;
    /**
     * 用户来源类型（1=自动注册、2=机构添加）
     * {@link MemberResourceEnum}
     */
    private Integer resource;

    /**
     * 住址
     */
    private String address;

    /**
     * 所属省份ID
     * {@link Area#code}
     */
    private String provinceCode;
    /**
     * 所属省份名称
     * {@link Area#name}
     */
    private String provinceName;
    /**
     * 所属市ID
     * {@link Area#code}
     */
    private String cityCode;
    /**
     * 所属市名称
     * {@link Area#name}
     */
    private String cityName;
    /**
     * 所属县ID
     * {@link Area#code}
     */
    private String districtCode;
    /**
     * 所属县名称
     * {@link Area#name}
     */
    private String districtName;

}
